/**
 * 
 */
package si.yun.utils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


/**
 * @author 微微
 *2021年3月29日
 * 
 */
public class Md5Utils {
	 /**
	  *  对字符串md5加密(小写字母+数字)
     *
     * @param str 传入要加密的字符串
     * @return  MD5加密后的字符串
     */
	
    public static String md5(String str) {
    	//字符数组
    	byte[] secretBytes=null;
        try {           
        	// MessageDigest 类为应用程序提供信息摘要算法的功能，如 MD5 或 SHA 算法。
     	   //信息摘要是安全的单向哈希函数，它接收任意大小的数据，并输出固定长度的哈希值。
     	   //MessageDigest.getInstance:生成实现指定摘要算法的 MessageDigest 对象。
     	   //md5 所请求算法的名称
        	secretBytes = MessageDigest.getInstance("md5").digest(str.getBytes());      
        } catch (NoSuchAlgorithmException e) {
           e.printStackTrace();
        }
        //16进制数字
        String md5code=new BigInteger(1,secretBytes).toString(16);
        //如果生成的数字未满32位，需要前面补0（可写可不写）
        for(int i=0;i<32-md5code.length();i++) {
        	md5code="0"+md5code;
        }
        return md5code;
    }
}
